Jazzy
The robotiq_tsf ROS 2 Jazzy package publishes the TSF-85 tactile sensor's
static, dynamic, IMU, and fused-orientation data as ROS topics. It is
available in the following repository:
- Reference: robotiq/ros
Build
Clone the repository into your ROS 2 workspace's src/ folder and build with
colcon:
cd ~/ros2_ws/src
git clone https://github.com/robotiq/ros.git
cd ~/ros2_ws
colcon build --packages-select robotiq_tsf
source install/setup.bash
Run
Launch the sensor node — library-backed, so it parses the sensor via the
extern/tactile_sensors submodule; clone with --recurse-submodules (or
git submodule update --init afterward) for this to build:
ros2 run robotiq_tsf poll_data_sdk_node
The device is autodetected (udev symlink, then USB descriptor); override
with --ros-args -p device:=/dev/ttyACM0.
The node publishes on the following topics:
| Topic | Message Type | Description |
|---|---|---|
TactileSensor/StaticData | robotiq_tsf/StaticData | Taxel pressure data — two fingers, each with 28 uint16 values |
TactileSensor/Dynamic | robotiq_tsf/Dynamic | Dynamic force data — two fingers, each with one int16 value |
TactileSensor/Accelerometer | robotiq_tsf/Accelerometer | Raw accelerometer — two readings of [x, y, z] int16 |
TactileSensor/Gyroscope | robotiq_tsf/Gyroscope | Raw gyroscope — two readings of [x, y, z] int16 |
TactileSensor/EulerAngle | robotiq_tsf/EulerAngle | Fused orientation — two readings of [roll, pitch, yaw] float32 |
TactileSensor/Quaternion | robotiq_tsf/Quaternion | Fused orientation — two readings of [w, x, y, z] float64 |
TactileSensor/Timestamp | robotiq_tsf/Timestamp | Per-finger firmware timestamp — two uint16 values |
EulerAngleandQuaternionare only published once the IMU bias calibration period completes at startup — keep the sensor still during this time.
Tactile visualization (RViz)
tactile_viz_node renders TactileSensor/StaticData as per-taxel 3D
markers and per-finger 2D heatmap images, with the pad TFs to place them:
ros2 launch robotiq_tsf tactile_viz.launch.py # driver + viz + RViz, standalone
ros2 launch robotiq_tsf gripper_tactile_viz.launch.py \
com_port:=/dev/ttyUSB0 # single window: 2F-85 gripper + pads on its fingertips
On startup it averages the first baseline_frames messages into a
per-taxel baseline and subtracts it — re-zero anytime with
ros2 topic pub --once /tactile_viz/zero std_msgs/msg/Empty.
Docker
The repository's docker/ folder provides scripts to build and run the
driver in a container, with sensor devices mapped in automatically. Clone
with submodules to pull in the required utilities:
git clone --recurse-submodules https://github.com/robotiq/ros.git
If you already cloned without --recurse-submodules:
git submodule update --init
| Script | Description |
|---|---|
build_launch_docker_ros2.sh | Builds the Docker image and launches a container with sensor devices mapped in |
sensor_install.sh | Sets up udev rules and permissions for bare-metal (non-Docker) use |